<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script src="./3-插入改进之希尔排序.js"></script>
    <script>
        // 比较器
        // 随机发射器 输入len 数组长度，size数字的大小范围 --帮助我们产生随机数据
        function generateRandomArray(maxLen,maxSize){
            let arr = [];
            let len = ~~(Math.random()*(maxLen + 1)+1);
            for(let i=0;i<len;i++){
                arr[i] = ~~((maxSize + 1) * Math.random() - maxSize * Math.random())
            }
            return arr;
        }
        // 和原生方法进行比较
        function compareWithRight(arr){
            arr.sort((a,b)=>(a-b));
        }

        // 新空间的一个数组
        function copyArr(arr){
            if(arr===null){
                return null;
            }
            let res = [];
            for(let i=0;i<arr.length;i++){
                res[i] = arr[i];
            }
            return res;
        }

        function checkIsEqual(arr1,arr2){
            if((arr1===null&&arr2!==null)||(arr1!==null&&arr2===null)){
                return false;
            }
            if (arr1 == null && arr2 == null) {
			    return true;
            }
            if(arr1.length!==arr2.length){
                return false;
            }
            for(let i=0;i<arr1.length;i++){
                if(arr1[i]!==arr2[i]){
                    return false;
                }
            }
            return true;
        }


        window.onload = function(){
            let 
                testTime = 500,
                maxLen = 10,
                maxSize  = 12,
                success = true;
            for(let i=0;i<testTime;i++){
                let arr1 = generateRandomArray(maxLen,maxSize);
                 console.dir('测试前'+arr1)
                let arr2 = copyArr(arr1);
                /************排序算法**********************/
               //  mergeSort(arr1)
               ///insertionSortDichotomy(arr1)
               shellSort(arr1)
                console.dir('测试后'+ arr1)
                // 调用原生sort方法 通过和原生sort比较判断结果是否正确
                compareWithRight(arr2);
                if(!checkIsEqual(arr1,arr2)){
                    success = false;
                    break;
                }
            }
            let result = success?'测试成功':'测试失败';
            console.log(result);
        }

    </script>
</body>
</html>